package com.whfc.openapi.api.hdc.service;

import com.whfc.hdc.dto.FshDeviceConfigDTO;
import com.whfc.hdc.dto.FshTencentCloudUserSignDTO;
import com.whfc.hdc.dto.FshWarnRuleDTO;
import com.whfc.hdc.params.FshDeviceConfigParam;
import com.whfc.hdc.params.FshDeviceDataParam;
import com.whfc.hdc.params.FshEnterRoomParam;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author qzexing
 * @version 1.0
 * @date 2021-04-06 17:47
 */
public interface HdcFshOpenService {

    /**
     * 获取腾讯云用户签名
     *
     * @param sn 设备sn
     * @return 用户签名
     */
    FshTencentCloudUserSignDTO getTencentCloudUserSign(String sn);

    /**
     * 进入通话房间
     *
     * @param sn    设备sn
     * @param param 参数
     */
    void enterRoom(String sn, FshEnterRoomParam param);

    /**
     * 获取设备配置
     *
     * @param sn 设备sn
     * @return 设备配置
     */
    FshDeviceConfigDTO getConfig(String sn);

    /**
     * 设置设备配置
     *
     * @param param 参数
     */
    void setConfig(FshDeviceConfigParam param);

    /**
     * 保存设备数据
     *
     * @param param 参数
     */
    void addCurrentData(FshDeviceDataParam param);

    /**
     * 保存极光推送注册ID
     *
     * @param deviceId       设备ID
     * @param sn             设备sn
     * @param registrationId 极光注册ID
     */
    void pushRegister(Integer deviceId, String sn, String registrationId);

    /**
     * 保存多媒体文件
     *
     * @param deviceId 设备ID
     * @param sn       设备sn
     * @param type     多媒体类型
     * @param file     文件
     */
    void saveMedia(Integer deviceId, String sn, Integer type, MultipartFile file);

    /**
     * 更新设备网络状态
     *
     * @param deviceId 设备ID
     * @param sn       设备sn
     * @param netState 网络状态
     */
    void updateNetState(Integer deviceId, String sn, Integer netState);

    /**
     * 获取安全帽报警类型
     *
     * @return 安全帽报警类型
     */
    List<FshWarnRuleDTO> getWarnTypeList();

}
